package com.bcbim.smart_water_interface.pipeManagement.service;

import com.bcbim.smart_water_interface.pipeManagement.dto.AddLineInSetDTO;
import com.bcbim.smart_water_interface.pipeManagement.dto.AddPointSetDTO;
import com.bcbim.smart_water_interface.pipeManagement.dto.PipelineFrameSelectInput;
import com.bcbim.smart_water_interface.pipeManagement.vo.*;
import com.bcbim.smart_water_interface.road.vo.RoadPullVO;

import java.util.List;
import java.util.Map;

/**
 * @Description: 管网管理service接口
 * @Author haoshuai
 * @Date 2021/8/19
 * @Version V1.0
 **/
public interface PipeManagementService {

    /**
     * @Description: 查询管线列表不含分页
     * @Param: code 管线编号(模糊检索)
     * @Param: roadId 道路id
     * @Param: uses 用途码值
     * @Param: pipeDiameterMin 管径范围(最小)
     * @Param: pipeDiameterMax 管径范围(最大)
     * @Param: buryType 埋设方式
     * @Param: material 材质
     * @Return: List<listLineVO>
     * @Author: haoshuai
     * @Date: 2021/8/19
     */
    List<PipeListVO> listLineNoPaging(AddLineInSetDTO params);

    /**
     * 查询管点列表不含分页
     *
     * @param params 前端传入管点加入选集参数
     * @param: roadId 道路id
     * @param: uses 用途
     * @param: feature 特征
     * @param: attachmen 附属
     * @param: startBury 开始井底深
     * @param: endBury 结束井底深
     * @param: startHigh 起始高程
     * @param: endHigh 结束高程
     * @return: com.bcbim.common.response.vo.ReturnPageMsg
     * @author wxc
     * @date 2021/8/25  11:11
     */
    List<PipeListVO> pointNoPaging(AddPointSetDTO params);

    /**
     * 获取道路下拉列表
     *
     * @return com.bcbim.common.response.vo.ReturnMsg
     * @author wxc
     * @date 2021/8/13  11:25
     */
    List<RoadPullVO> getRoadPull();

    /**
     * 获取全部管网信息(用于显示模型)
     *
     * @return java.util.Map
     * @author wxc
     * @date 2021/8/27  9:15
     */
    Map<String, Object> getAllPipeList();

    /***
     * 查询存放到redis中的管点数据列表（未分页）
     *
     * @param params 查询参数
     * @param: roadId 道路id
     * @param: uses 用途
     * @param: feature 特征
     * @param: attachmen 附属
     * @param: startBury 开始井底深
     * @param: endBury 结束井底深
     * @param: startHigh 起始高程
     * @param: endHigh 结束高程
     * @return java.util.List<com.bcbim.pipeline_interface.pipeManagement.vo.PipePointListVO>
     * @author wxc
     * @date 2021/8/30  10:43
     */
    List<PipePointListVO> listPointNoLimit(AddPointSetDTO params);

    /**
     * 查询存放到redis中的管线数据列表（未分页）
     *
     * @param params 查询参数
     * @Param: code 管线编号(模糊检索)
     * @Param: roadId 道路id
     * @Param: uses 用途码值
     * @Param: pipeDiameterMin 管径范围(最小)
     * @Param: pipeDiameterMax 管径范围(最大)
     * @Param: buryType 埋设方式
     * @Param: material 材质
     * @Return: List<PipeLineListVO>
     * @Author: wxc
     * @Date: 2021/8/30
     */
    List<PipeLineListVO> listLineNoLimit(AddLineInSetDTO params);

    /**
     * 通过管线id集合查询数据,用于显示水波流向
     *
     * @param lineIdList 集选管线id集合
     * @return java.util.List<com.bcbim.pipeline_interface.pipeManagement.vo.PipeLineListUseWaterVO>
     * @author wxc
     * @date 2021/9/2  16:39
     */
    List<PipeLineListUseWaterVO> listPipeLineUseWater(List<String> lineIdList);


    /**
     * 通过框选位置添加管点集选
     *
     * @param pipelineFrameSelectInput 框选位置
     * @return java.util.List<com.bcbim.pipeline_interface.pipeManagement.vo.PipeListVO>
     * @author wxc
     * @date 2021/10/11
     */
    List<PipeListVO> listPointByCodes(PipelineFrameSelectInput pipelineFrameSelectInput);

    /**
     * 通过框选位置添加管线集选
     *
     * @param pipelineFrameSelectInput 框选位置
     * @return java.util.List<com.bcbim.pipeline_interface.pipeManagement.vo.PipeListVO>
     * @author wxc
     * @date 2021/10/11
     */
    List<PipeListVO> listLineByCodes(PipelineFrameSelectInput pipelineFrameSelectInput);

    List<PipeLinePointsListVO> listPipelinePoints(String[] pointIds);

    Map<String,Object> listPipelinePointsByPointIds(String[] pointIds);
}
